<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de suppression
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 5 || $GLOBALS['USER']['admin'])){
	
		// l'identifiant de la donnée à supprimer est indiqué par un entier
		if(isset($_GET['id']) && numericInt($_GET['id'])){

?>
<?php
//------------------------------------------------------------ Suppression des données

/********************************* Règles :

	- id doit désigner un seul taxon
	- Le taxon doit exister dans la BDD
	- Le taxon ne doit pas être liée à une autre entité

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	//---------------------------------- Contrôle des données ----------------------------------
		
	$nb_taxons = valueExists((int)$_GET['id'], "CODETAXON", "taxon", $connexion);
	
	if($nb_taxons == 0){ // le taxon n'existe pas
		$statut[] = "Le taxon indiqué n'existe pas";
		$erreur = true;
	}else{
		
		// On compte le nombre de liens entre le taxon et d'autres entités
		$query_recuperation_nb_liens_taxon = "SELECT * ";
		$query_recuperation_nb_liens_taxon .= "FROM ( ";
		$query_recuperation_nb_liens_taxon .= "SELECT COUNT(*) AS nbTaxonsTouffes ";
		$query_recuperation_nb_liens_taxon .= "FROM taxon t, touffe a ";
		$query_recuperation_nb_liens_taxon .= "WHERE t.CODETAXON = a.CODETAXON ";
		$query_recuperation_nb_liens_taxon .= "AND t.CODETAXON = ".$_GET['id']." ";
		$query_recuperation_nb_liens_taxon .= ") T1, ";
		$query_recuperation_nb_liens_taxon .= "( ";
		$query_recuperation_nb_liens_taxon .= "SELECT COUNT(*) AS nbTaxonsSemis ";
		$query_recuperation_nb_liens_taxon .= "FROM taxon t, semis a ";
		$query_recuperation_nb_liens_taxon .= "WHERE t.CODETAXON = a.CODETAXON ";
		$query_recuperation_nb_liens_taxon .= "AND t.CODETAXON = ".$_GET['id']." ";
		$query_recuperation_nb_liens_taxon .= ") T2, ";
		$query_recuperation_nb_liens_taxon .= "( ";
		$query_recuperation_nb_liens_taxon .= "SELECT COUNT(*) AS nbTaxonsSachetsGraines ";
		$query_recuperation_nb_liens_taxon .= "FROM taxon t, sachet_graines a ";
		$query_recuperation_nb_liens_taxon .= "WHERE t.CODETAXON = a.CODETAXON ";
		$query_recuperation_nb_liens_taxon .= "AND t.CODETAXON = ".$_GET['id']." ";
		$query_recuperation_nb_liens_taxon .= ") T3, ";
		$query_recuperation_nb_liens_taxon .= "( ";
		$query_recuperation_nb_liens_taxon .= "SELECT COUNT(*) AS nbTaxonsVisites ";
		$query_recuperation_nb_liens_taxon .= "FROM taxon t, a_ete_vu_taxon a ";
		$query_recuperation_nb_liens_taxon .= "WHERE t.CODETAXON = a.CODETAXON ";
		$query_recuperation_nb_liens_taxon .= "AND t.CODETAXON = ".$_GET['id']." ";
		$query_recuperation_nb_liens_taxon .= ") T4, ";
		$query_recuperation_nb_liens_taxon .= "( ";
		$query_recuperation_nb_liens_taxon .= "SELECT COUNT(*) AS nbTaxonCommandes ";
		$query_recuperation_nb_liens_taxon .= "FROM taxon t, ligne_commande a ";
		$query_recuperation_nb_liens_taxon .= "WHERE t.CODETAXON = a.CODETAXON ";
		$query_recuperation_nb_liens_taxon .= "AND t.CODETAXON = ".$_GET['id']." ";
		$query_recuperation_nb_liens_taxon .= ") T5, ";
		$query_recuperation_nb_liens_taxon .= "( ";
		$query_recuperation_nb_liens_taxon .= "SELECT COUNT(*) AS nbTaxonIndex ";
		$query_recuperation_nb_liens_taxon .= "FROM taxon t, contient_taxons a ";
		$query_recuperation_nb_liens_taxon .= "WHERE t.CODETAXON = a.CODETAXON ";
		$query_recuperation_nb_liens_taxon .= "AND t.CODETAXON = ".$_GET['id']." ";
		$query_recuperation_nb_liens_taxon .= ") T6 ";
		
		$result_recuperation_nb_liens_taxon = mysql_query($query_recuperation_nb_liens_taxon, $connexion) or logError("RECUPERATION NB LIENS TAXON-".$query_recuperation_nb_liens_taxon."-".mysql_error());
		
		if(mysql_num_rows($result_recuperation_nb_liens_taxon) == 1){ // on a réussi à récupérer les données du taxon à supprimer
			
			$tab_recuperation_nb_liens_taxon = mysql_fetch_row($result_recuperation_nb_liens_taxon);
			
			if($tab_recuperation_nb_liens_taxon[0] > 0){
				$statut[] = "Ce taxon est utilisé par ".$tab_recuperation_nb_liens_taxon[0]." touffe(s)";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_taxon[1] > 0){
				$statut[] = "Ce taxon est utilisé par ".$tab_recuperation_nb_liens_taxon[1]." semis(s)";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_taxon[2] > 0){
				$statut[] = "Ce taxon est utilisé par ".$tab_recuperation_nb_liens_taxon[2]." sachet(s) de graines";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_taxon[3] > 0){
				$statut[] = "Ce taxon est utilisé par ".$tab_recuperation_nb_liens_taxon[3]." visite(s) dans la nature";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_taxon[4] > 0){
				$statut[] = "Ce taxon est utilisé par ".$tab_recuperation_nb_liens_taxon[4]." commande(s)";
				$erreur = true;
			}
			if($tab_recuperation_nb_liens_taxon[5] > 0){
				$statut[] = "Ce taxon est utilisé par ".$tab_recuperation_nb_liens_taxon[5]." index séminum";
				$erreur = true;
			}
			
		}else{
			$statut[] = "Une donnée n'a pas pu être vérifiée";
			$erreur = true;
		}
		
		mysql_free_result($result_recuperation_nb_liens_taxon);
		
	}
	
	//---------------------------------- Suppression du taxon ----------------------------------
	
	if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
	
		// Suppression des informations de la table SE_NOMME_COURAMMENT
		$query_suppression_liens_nom = "DELETE FROM se_nomme_couramment WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_nom = mysql_query($query_suppression_liens_nom, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_nom."-".mysql_error());
		if($result_suppression_liens_nom === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table CULTIVAR
		$query_suppression_liens_cultivar = "DELETE FROM cultivar WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_cultivar = mysql_query($query_suppression_liens_cultivar, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_cultivar."-".mysql_error());
		if($result_suppression_liens_cultivar === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table SE_TROUVE_EN_MILIEU_BIOLOGIQUE
		$query_suppression_liens_milieu = "DELETE FROM se_trouve_en_milieu_biologique WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_milieu = mysql_query($query_suppression_liens_milieu, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_milieu."-".mysql_error());
		if($result_suppression_liens_milieu === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table EST_DE_TYPE_BIOLOGIQUE
		$query_suppression_liens_type = "DELETE FROM est_de_type_biologique WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_type = mysql_query($query_suppression_liens_type, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_type."-".mysql_error());
		if($result_suppression_liens_type === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table A_POUR_SUPPORT
		$query_suppression_liens_reference = "DELETE FROM a_pour_support WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_reference = mysql_query($query_suppression_liens_reference, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_reference."-".mysql_error());
		if($result_suppression_liens_reference === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table A_COMME_VARIETE
		$query_suppression_liens_variete = "DELETE FROM a_comme_variete WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_variete = mysql_query($query_suppression_liens_variete, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_variete."-".mysql_error());
		if($result_suppression_liens_variete === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table EST_DE_SOUS_ESPECE
		$query_suppression_liens_sousespece = "DELETE FROM est_de_sous_espece WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_sousespece = mysql_query($query_suppression_liens_sousespece, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_sousespece."-".mysql_error());
		if($result_suppression_liens_sousespece === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table EST_DE_ESPECE
		$query_suppression_liens_espece = "DELETE FROM est_de_espece WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_espece = mysql_query($query_suppression_liens_espece, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_espece."-".mysql_error());
		if($result_suppression_liens_espece === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table APPARTIENT_A_SOUS_GENRE
		$query_suppression_liens_sousgenre = "DELETE FROM appartient_a_sous_genre WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_sousgenre = mysql_query($query_suppression_liens_sousgenre, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_sousgenre."-".mysql_error());
		if($result_suppression_liens_sousgenre === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table APPARTIENT_A_GENRE
		$query_suppression_liens_genre = "DELETE FROM appartient_a_genre WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_genre = mysql_query($query_suppression_liens_genre, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_genre."-".mysql_error());
		if($result_suppression_liens_genre === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table EST_DE_SOUS_FAMILLE
		$query_suppression_liens_sousfamille = "DELETE FROM est_de_sous_famille WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_sousfamille = mysql_query($query_suppression_liens_sousfamille, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_sousfamille."-".mysql_error());
		if($result_suppression_liens_sousfamille === false){
			$erreur = true;
		}
		
		// Suppression des informations de la table EST_DE_FAMILLE
		$query_suppression_liens_famille = "DELETE FROM est_de_famille WHERE CODETAXON = ".$_GET['id'];
		$result_suppression_liens_famille = mysql_query($query_suppression_liens_famille, $connexion) or logError("SUPPRESSION LIENS TAXON-".$query_suppression_liens_famille."-".mysql_error());
		if($result_suppression_liens_famille === false){
			$erreur = true;
		}
		
		if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
	
			// Suppression des informations de la table TAXON
			$query_suppression_taxon = "DELETE FROM taxon WHERE CODETAXON = ".$_GET['id'];
			$result_suppression_taxon = mysql_query($query_suppression_taxon, $connexion) or logError("SUPPRESSION TAXON-".$query_suppression_taxon."-".mysql_error());
			
			if($result_suppression_taxon === true){
				$statut[] = "Le taxon a été supprimé - redirection dans 2 sec...";
				logAction("TAXON (id: ".$_GET['id'].") SUPPRIME par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
			}else{
				$statut[] = "Erreur critique lors de la suppression du taxon";
				$erreur = true;
			}
			
		}else{
			$statut[] = "Erreur critique lors de la suppression du taxon";
			$erreur = true;
		}

	}

?>
<?php
//------------------------------------------------------------ Affichage du statut
	
	if($erreur){
		boutonRetour("index.php?p=gestion/taxon_gere"); // appel à la fonction boutonRetour() définie dans fonctions.php
		afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
	}else{
		afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
		redirection("gestion/taxon_gere", 2);
	}

?>
<?php
	if($erreur){
?>
<div class="information">
	<div class="titre">Information</div>
	<h4>Erreurs de suppression :</h4>
	<p>
		Si la ressource à supprimer est liée à d'autres éléments, vous ne pourrez pas la supprimer.<br />
		Si vous souhaitez tout de même la supprimer, il vous faudra préalablement supprimer les éléments auxquels elle est liée.
	</p>
</div>
<?php
	}
?>
<?php
//------------------------------------------------------------ Accès refusé à la page

		}else{
			afficherStatut("Le taxon n'est pas ou mal indiqué", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>